home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 235 / Issue 235 - September 2007 - DPCS0907DVD.ISO / Extras / NetObjects Fusion / NOF10.exe / data1.cab / FSI / lib / nof / ui / ImageOutputSettingsDlg.js < prev    next >
Encoding:
Text File  |  2007-04-11  |  10.9 KB  |  337 lines

  1. /****i* SOURCE_FILE/INFO
  2.     *
  3.     * NAME
  4.     *  ImageOutputSettingsDlg.js
  5.     *
  6.     * USAGE
  7.     *  Part of Netobjects JavaScript Library.
  8.     *
  9.     * COPYRIGHT
  10.     *  Copyright ⌐ 2000-2005 Website Pros, Inc.
  11.     *  All Rights Reserved.
  12.     *
  13.     *  This is an unpublished work protected by Website Pros, Inc.
  14.     *  as a trade secret, and is not to be used or disclosed except as
  15.     *  expressly provided in a written license agreement executed by
  16.     *  you and Website Pros, Inc.
  17.     *
  18.     *      <copyright@websitepros.com>
  19.     *
  20.     * NOTES
  21.     *  JavaScript code.
  22.     *
  23.     *****/
  24.  
  25. if (!IS.isModuleInitialized("IS.NOF.UI.ImageOutputSettingsDlg"))
  26. {
  27.     
  28.     /****h* NOF_JavaScript_Library/NOF.UI.ImageOutputSettingsDlg
  29.     *
  30.     * NAME
  31.     *  NOF.UI.ImageOutputSettingsDlg
  32.     *
  33.     * DESCRIPTION
  34.     *
  35.     * External dependencies: NOF.UI.ListEditorDlg, NOF.ImageOutputSettings, NOF.UTIL.Validator
  36.     ****/
  37.     
  38.     function NOF_ImageOutputSettingsDlg (_editedElem, _document, _name, _validator, _newElem) {
  39.         this.__proto__ = NOF_ImageOutputSettingsDlg.prototype;
  40.         this.SUPER(_editedElem, _document, _name, _validator);
  41.         
  42.         this.newImgSettings = _newElem;
  43.         
  44.         this.IMG_QUALITY = new Array (4);
  45.         this.IMG_QUALITY['low'] = 39;
  46.         this.IMG_QUALITY['medium'] = 74;
  47.         this.IMG_QUALITY['high'] = 99;
  48.         this.IMG_QUALITY['maximum'] = 100;
  49.         
  50.         this.imageTypeId = "saveoutputsettings.select.imgType";
  51.         this.imageQualityLevelId = "saveoutputsettings.select.qualityLevel";
  52.         this.imageQualityId = "saveoutputsettings.text.quality";
  53.         this.imagePaletteId = "saveoutputsettings.select.palette";
  54.         this.imageColorsId = "saveoutputsettings.select.colors";
  55.         this.imageTypeJPGDivId = "saveoutputsettings.div.jpeg";
  56.         this.imageTypeGIFDivId = "saveoutputsettings.div.gif";
  57.     }
  58.     
  59.     NOF_ImageOutputSettingsDlg.inherits( NOF.UI.ListEditorDlg);
  60.     function NOF_ImageOutputSettingsDlg_ProtoBuilder () {
  61.         var member = NOF_ImageOutputSettingsDlg.prototype;    
  62.         member.defaultName = "OUTPUTSETTINGS_DLG";
  63.         
  64.         var method = NOF_ImageOutputSettingsDlg.prototype;
  65.         
  66.         method.super_onLoad   = method.onLoad;
  67.         method.onLoad   = function onLoad () {
  68.             this.super_onLoad();
  69.             
  70.             this.loadImageType ();      
  71.             this.doc.disableElement ('form.button.ok');
  72.             this.doc.disableElement ('form.button.remove');
  73.             this.doc.focusElement ('form.text.label');
  74.         }
  75.         
  76.         method.super_onRemove = method.onRemove;
  77.         method.onRemove = function onRemove () {
  78.             var settingToDelete = this.doc.getElementValue('form.select.list')[0];
  79.             var ios = new NOF.ImageOutputSettings();
  80.             ios.deleteConfigFile(settingToDelete);      
  81.             this.super_onRemove ();
  82.             this.isModified = true;
  83.         }
  84.         
  85.         method.super_onAdd = method.onAdd;
  86.         method.onAdd = function onAdd () {      
  87.             var name = this.doc.getElementValue ('form.text.label');      
  88.             if (this.isModified == true) {
  89.                 this.updateItems();
  90.             }      
  91.             var newItem = this.doc.getElementValue('form.text.label');
  92.             newItem = trim(newItem);
  93.             if (newItem.length > 0) {
  94.                 if (this.super_onAdd()) {        
  95.                     this.saveImageSettings(name);
  96.                     this.newImgSettings.saveConfigFile(name);
  97.                     var elem = this.editedElement.addElementToList (name);
  98.                     this.editedElement.setSelectedByElement (elem);
  99.                     this.onOk();
  100.                 }
  101.                 else {
  102.                     this.doc.disableElement ('form.button.ok');
  103.                     return false;
  104.                 }
  105.             }
  106.             else {
  107.                 this.onOk();
  108.             }
  109.         }
  110.         
  111.         method.onOk     = function onOk() {
  112.             this.close();
  113.         }
  114.         
  115.         method.super_onCancel = method.onCancel;
  116.         method.onCancel = function onCancel () {
  117.             if (this.isModified == true) {
  118.                 this.updateItems();
  119.             }      
  120.             this.close();
  121.         }
  122.         
  123.         method.onEnableOk = function onEnableOk () {
  124.             this.doc.enableElement ('form.button.ok');
  125.         }
  126.         
  127.         method.onDisableOk = function onDisableOk () {
  128.             this.doc.disableElement ('form.button.ok');
  129.         }
  130.         
  131.         method.onSetImageType = function onSetImageType () {
  132.             var imgType = this.doc.getElementValue (this.imageTypeId)[0];
  133.             this.switchImageType (imgType);
  134.         }
  135.         
  136.         method.onSetQuality = function onSetQuality () {
  137.             var qualityLevel = this.doc.getElementValue (this.imageQualityLevelId)[0];
  138.             this.doc.setElementValue (this.imageQualityId,this.IMG_QUALITY[qualityLevel]);
  139.         }
  140.         
  141.         method.onQualityChanged = function onQualityChanged () {
  142.             var quality = eval(this.doc.getElementValue (this.imageQualityId));
  143.             this.setQualityLevel (quality);
  144.         }
  145.         
  146.         method.onIncreaseQuality = function onIncreaseQuality () {
  147.             var quality = eval(this.doc.getElementValue (this.imageQualityId));
  148.             if (quality < 100) {
  149.                 quality++;
  150.                 this.doc.setElementValue (this.imageQualityId, quality);
  151.                 this.setQualityLevel (quality);
  152.             }
  153.         }
  154.         
  155.         method.onDecreaseQuality = function onDecreaseQuality () {
  156.             var quality = eval(this.doc.getElementValue (this.imageQualityId));
  157.             if (quality > 0) {
  158.                 quality--;
  159.                 this.doc.setElementValue (this.imageQualityId, quality);
  160.                 this.setQualityLevel (quality);
  161.             }
  162.         }
  163.         
  164.         method.onValidatePaste = function onValidatePaste (id) {
  165.             if (this.editedElement == null)
  166.                 return false;    
  167.             var validator = new NOF.UTIL.Validator();
  168.             validator.setIsPercentage(true);
  169.             validator.setLengthRequired(false);
  170.             var str = this.win.clipboardData.getData("Text");
  171.             var res = validator.validateInput(str, this.doc.getElementValue(id));
  172.             return res;
  173.         }    
  174.         
  175.         method.onValidatePercent = function onValidatePercent (id) {
  176.             var validator = new NOF.UTIL.Validator();
  177.             validator.setIsPercentage(true);
  178.             validator.setLengthRequired(false);
  179.             var chr = String.fromCharCode(this.win.event.keyCode);
  180.             var res = validator.validateInput(chr, this.doc.getElementValue(id));
  181.             return res;
  182.         }    
  183.         
  184.         method.onValidateQuality = function ValidateQuality (id) {
  185.             validator = new NOF.UTIL.Validator();
  186.             validator.setIsDigit(true);
  187.             
  188.             var chr = String.fromCharCode(window.event.keyCode);
  189.             var res = validator.validateInput(chr, this.doc.getElementValue(id));
  190.             return res;
  191.         }
  192.         
  193.         method.onPaletteChanged = function onPaletteChanged () {
  194.             //debugger;
  195.         }
  196.         
  197.         method.onColorChanged = function onColorChanged () {
  198.             //debugger;
  199.         }
  200.         
  201.         method.onSelectOutputSettings = function onSelectOutputSettings () {
  202.             try {
  203.                 if (this.doc.getElementItems('form.select.list').length > 0)
  204.                     this.doc.enableElement ('form.button.remove');
  205.             } catch (e) {}
  206.         }
  207.         
  208.         method.setQualityLevel = function setQualityLevel (quality) {
  209.             var level = 'maximum';
  210.             var measure = 'high';
  211.             if (this.IMG_QUALITY[measure] >= quality) {
  212.                 level = 'high';
  213.                 measure = 'medium';
  214.                 if (this.IMG_QUALITY[measure] >= quality) {
  215.                     level = 'medium';
  216.                     measure = 'low';
  217.                     if (this.IMG_QUALITY[measure] >= quality) {
  218.                         level = 'low';
  219.                     }
  220.                 }
  221.             }
  222.             this.doc.setElementValue (this.imageQualityLevelId, [level]);
  223.         }
  224.         
  225.         method.loadImageType = function loadImageType () {
  226.             var imgType = "";
  227.             var gifDivAttr = "tabhide";
  228.             var jpegDivAttr = "tabhide";
  229.             
  230.             var quality = this.newImgSettings.getQuality();
  231.             var format = this.newImgSettings.getFormat();
  232.             var palette;
  233.             if (format.toLowerCase() == 'gif') {
  234.                 gifDivAttr = "tabshow";
  235.                 imgType = "GIF";
  236.                 
  237.                 palette = ( quality & 0xffff0000 ) / 0x10000;
  238.                 quality = ( quality & 0xffff );
  239.                 this.doc.setElementValue(this.imageColorsId, [quality]);
  240.                 this.doc.setElementValue (this.imagePaletteId, [palette]);
  241.             }
  242.             else {
  243.                 jpegDivAttr = "tabshow";
  244.                 imgType = "JPEG";
  245.                 this.doc.setElementValue (this.imageQualityId, quality);
  246.                 this.setQualityLevel (quality);
  247.             }      
  248.             this.doc.setElementAttribute (this.imageTypeJPGDivId, "class", jpegDivAttr);
  249.             this.doc.setElementAttribute (this.imageTypeGIFDivId, "class", gifDivAttr);
  250.             this.doc.setElementValue (this.imageTypeId, imgType);      
  251.         }
  252.         
  253.         method.saveImageSettings = function saveImageSettings (name) {
  254.             var imgType = this.doc.getElementValue (this.imageTypeId)[0];      
  255.             var quality = this.doc.getElementValue (this.imageQualityId) - 0;
  256.             this.newImgSettings.setFormat (imgType);
  257.             if (imgType.toLowerCase() == 'gif') {
  258.                 var palette = this.doc.getElementValue("saveoutputsettings.select.palette")[0] - 0;
  259.                 quality = ((this.doc.getElementValue("saveoutputsettings.select.colors")[0] - 0) & 0xffff) + (palette & 0xffff) * 0x10000;
  260.             }      
  261.             this.newImgSettings.setQuality(quality);
  262.             this.newImgSettings.setName (name);
  263.         }
  264.         
  265.         method.switchImageType = function switchImageType (imgType) {
  266.             var gifDivAttr = "tabhide";
  267.             var jpegDivAttr = "tabhide";
  268.             //if (imgType.toLowerCase() == "JPEG".toLowerCase() ||
  269.             //    imgType.toLowerCase() == "JPG".toLowerCase()) {
  270.             if (imgType.toUpperCase() == "JPEG" ||
  271.                 imgType.toUpperCase() == "JPG") {
  272.                     
  273.                 jpegDivAttr = "tabshow";
  274.                 imgType = "JPEG";
  275.                 
  276.                 var q = this.doc.getElementValue(this.imageColorsId) || this.newImgSettings.getQuality();
  277.                 var quality = Math.min(100, Math.round(100/8)*(q));
  278.                 this.doc.setElementValue (this.imageQualityId, quality);
  279.                 this.setQualityLevel (quality);
  280.                 } else if (imgType.toUpperCase() == "GIF") {
  281.                         //(imgType.toLowerCase() == "GIF".toLowerCase()) {
  282.                 gifDivAttr = "tabshow";
  283.                 imgType = "GIF";
  284.                 
  285.                 var q = this.doc.getElementValue(this.imageQualityId) || this.newImgSettings.getQuality();
  286.                 var quality = Math.round( q *(8/100) );
  287.                 this.doc.setElementValue (this.imageColorsId, [quality]);
  288.             }
  289.             this.doc.setElementAttribute (this.imageTypeJPGDivId, "class", jpegDivAttr);
  290.             this.doc.setElementAttribute (this.imageTypeGIFDivId, "class", gifDivAttr);
  291.             this.doc.setElementValue (this.imageTypeId, imgType);
  292.         }
  293.         
  294.         method.initFieldPropertyValues = function initFieldPropertyValues () {
  295.             var fieldPropertyValue = new Array();
  296.             fieldPropertyValue['form.text.label']    = 'saveoutputsettings.text.outputSettingName';
  297.             fieldPropertyValue['form.select.list']   = 'saveoutputsettings.select.outputSettingsList';
  298.             fieldPropertyValue['form.button.ok']     = 'saveoutputsettings.button.ok';
  299.             fieldPropertyValue['form.button.remove'] = 'saveoutputsettings.button.remove';
  300.             this.doc.setPropertyMap(fieldPropertyValue);
  301.         }
  302.         
  303.         method.setItems = function setItems () {
  304.             var listItems = this.getEditedElement().getListElements();      
  305.             var idx = listItems.length;
  306.             if (idx > 0) {
  307.                 var j = 0;
  308.                 var items = new Array();        
  309.                 for (var i=0;i<idx;i++) {
  310.                     if (listItems[i] != NOF_OSConstants.DEFAULT) {
  311.                         items[j] = listItems[i];
  312.                         j++;
  313.                     }
  314.                 }
  315.                 if (j>0)
  316.                     this.doc.setElementItems('form.select.list', items);
  317.             }   
  318.         }
  319.         
  320.         method.saveItems = function saveItems () {      
  321.             this.updateItems();
  322.         }    
  323.         
  324.         method.updateItems = function updateItems() {
  325.             var listItems = this.doc.getElementItems('form.select.list');
  326.             listItems[listItems.length] = NOF_OSConstants.DEFAULT;
  327.             this.editedElement.update(listItems);
  328.         }
  329.         
  330.         
  331.     }
  332.     
  333.     NOF_ImageOutputSettingsDlg_ProtoBuilder();
  334.     UI.__proto__.ImageOutputSettingsDlg = NOF_ImageOutputSettingsDlg;
  335.     
  336. }
  337.